<?php

class PessoaController extends Zend_Controller_Action
{
	public function cadastrarAction(){
		$classePessoa = new Pessoa();

		if (($post = $this->_request->getPost()) != array())
		{
            $pessoa = $classePessoa->buscarPessoa($post['NOME']);
            if(!empty($pessoa) && ($pessoa->ENDERECO == $this->getParam('ENDERECO'))){
                $_SESSION['msg']['tipo'] = 'erro';
                $_SESSION['msg']['conteudo'] = 'Não cadastrado por já existir.';
                $this->redirect('/pessoa/cadastrar');
            }elseif (!empty($pessoa) && ($pessoa->NR_IDENT == $this->getParam('NR_IDENT' || $pessoa->NOME == $this->getParam('NOME')) )) {
                $_SESSION['msg']['tipo'] = 'erro';
                $_SESSION['msg']['conteudo'] = 'Já existe uma pessoa cadastrada para este cpf ou com nome exatamente igual!';
            }

            try{


                $classePessoa->cadastrarPessoa($post);
                $_SESSION['msg']['tipo'] = 'sucesso';
                $_SESSION['msg']['conteudo'] = 'Pessoa Cadastrada com sucesso!';
                unset($_SESSION['total']);
                $this->redirect('/pessoa/cadastrar');

            }catch(Exception $e){
                $_SESSION['msg']['tipo'] = 'erro';
                $_SESSION['msg']['conteudo'] = 'Não cadastrado por algum motivo desconhecido.';
                $this->redirect('/pessoa/cadastrar');
            }
		}
        $this->view->tituloView = "Cadastrar";
	}

	public function editarAction(){

		$id = $this->_getParam("ID");
		$tPessoa= new DbTable_Pessoa();
		$pessoa = $tPessoa->find($id);

        if (($post = $this->_request->getPost()) != array()){
            if($post['NR_IDENT'] == ""){
                $post['NR_IDENT'] = null;
            }

            $dataNascimento =new String();
            $post['DATA_NASC'] = $dataNascimento->formatarDataParaInsercao($post['DATA_NASC']);

            $pessoa->current()->setFromArray($post);
            $pessoa->current()->save();
            $_SESSION['msg']['conteudo'] = 'Alteração feita com sucesso!';
            $string = new String();
            $string->removerAcentoBanco();
        }


        $this->_helper->viewRenderer('cadastrar');
        $this->view->pessoa = $pessoa;
        $this->view->ID = $pessoa->current()->ID;
        $this->view->tituloView = "Editar";

    }

	public function deletarAction(){

		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender();

		$id = $this->_getParam("id");

		$tPessoa = new DbTable_Pessoa();
        $pessoa = $tPessoa->find($id);
		$string = new String();

		$indice = $string->recursive_array_search($pessoa->NOME, $_SESSION['pessoas']);
		unset($_SESSION['pessoas'][$indice]);
        try{
            $pessoa->current()->delete();
            unset($_SESSION['total']);
        }catch(Exception $e){
            echo $e->getMessage();
        }


	}

	public function buscarAction(){

		$nome = $this->_getParam("nome");
		$tPessoa= new DbTable_Pessoa();

		if (!($this->_getParam('page'))){
			$pessoas = $tPessoa->fetchAll(
			$tPessoa->select()
			->distinct()
			->where('NOME like ?', $nome.'%'));//'%'.$nome.'%'

			$_SESSION['pessoas'] = $pessoas;
			$this->view->contagem = count($pessoas);
		}

		$pessoas = $_SESSION['pessoas'];
		$this->view->contagem = count($pessoas);
			
		$paginator = Zend_Paginator::factory($pessoas);
		$paginator->setCurrentPageNumber($this->_getParam('page',1))
		->setItemCountPerPage(15);

		Zend_Paginator::setDefaultScrollingStyle('Sliding');
		Zend_View_Helper_PaginationControl::setDefaultViewPartial('control.phtml');
		$this->view->assign('paginator', $paginator);

		$this->view->nome= $nome;

	}

	public function listarAction(){

		if (!is_null($this->_getParam('page')))
	    	$_POST['page'] = $this->_getParam('page');
			
		if (($post = $this->_request->getPost()) != array())
		{
            if (in_array("Exportar", $this->_getAllParams())){
                $this->_forward("exportar","transferencia");

            }else if(in_array("Imprimir", $this->_getAllParams())){

                $this->_helper->layout->disableLayout();
                $this->_helper->viewRenderer->setNoRender();
                $this->_forward("imprimir");
            }else {

                if (!($this->_getParam('page'))){
                    $consulta = new Consulta($this->_getAllParams());
                    $pessoas =$consulta->gerarLista();
                    $_SESSION['pessoas'] = $pessoas;

                    $this->view->contagem = count($pessoas);
                }

                $pessoas = $_SESSION['pessoas'];
                $this->view->contagem = count($pessoas);

                $paginator = Zend_Paginator::factory($pessoas);
                $paginator->setCurrentPageNumber($this->_getParam('page',1))
                ->setItemCountPerPage(10);
                // ->setPageRange(15);

                Zend_Paginator::setDefaultScrollingStyle('Sliding');
                Zend_View_Helper_PaginationControl::setDefaultViewPartial('control.phtml');
                $this->view->assign('paginator', $paginator);
            }

		}

	}


	public function imprimirAction(){


		$form = new Form_Impressao();
		if (($post = $this->_request->getPost()) != array())
		{
			if ($form->isValid($post)){

				$this->_helper->layout->disableLayout();
				$this->_helper->viewRenderer->setNoRender();
				$consulta = new Consulta($this->_getAllParams());
				$pessoas =$consulta->gerarLista();

				$impressao  = new Impressao($pessoas);
				$impressao->imprimirPdf();
			}
		}

		$this->view->form = $form;

	}

}
